package main

import (
	"bytes"
	"encoding/gob"
	"fmt"
)

type Student struct {
	Name string
	Age  int32
}

func main() {

	xm := Student{
		Name: "xiaoming",
		Age:  20,
	}
	//1、序列化
	//	1）定义编码器
	var buf bytes.Buffer
	gobEn := gob.NewEncoder(&buf)
	//	2）编码器编码
	err := gobEn.Encode(&xm)
	if err != nil {
		fmt.Println("编码错误：", err)
	}
	fmt.Println("序列化后：", buf.Bytes())

	//2、反序列化
	//	1）定义解码器
	gobDe := gob.NewDecoder(bytes.NewReader(buf.Bytes()))
	var dm Student
	//	2）解码器解码
	err = gobDe.Decode(&dm)
	if err != nil {
		fmt.Println("反序列错误：", err)
	}
	fmt.Printf("反序列后：%s", dm)
}
